1 /* 2 3 Boost Software License - Version 1.0 - August 17th, 2003 4 5 Permission is hereby granted, free of charge, to any person or organization 6 obtaining a copy of the software and accompanying documentation covered by 7 this license (the "Software") to use, reproduce, display, distribute, 8 execute, and transmit the Software, and to prepare derivative works of the 9 Software, and to permit third-parties to whom the Software is furnished to 10 do so, all subject to the following: 11 12 The copyright notices in the Software and this entire statement, including 13 the above license grant, this restriction and the following disclaimer, 14 must be included in all copies of the Software, in whole or in part, and 15 all derivative works of the Software, unless such copies or derivative 16 works are solely in the form of machine-executable object code generated by 17 a source language processor. 18 19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT 22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE 23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, 24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 25 DEALINGS IN THE SOFTWARE. 26 27 */ 28 29 module derelict.glib.gqueue; 30 31 import derelict.glib.gtypes; 32 import derelict.glib.glibconfig; 33 import derelict.glib.glist; 34 extern (C): 35 36 alias _GQueue GQueue; 37 38 struct _GQueue 39 { 40 GList* head; 41 GList* tail; 42 guint length; 43 } 44 45 version(Derelict_Link_Static) 46 { 47 extern( C ) nothrow 48 { 49 GQueue* g_queue_new(); 50 void g_queue_free(GQueue* queue); 51 void g_queue_free_full(GQueue* queue, GDestroyNotify free_func); 52 void g_queue_init(GQueue* queue); 53 void g_queue_clear(GQueue* queue); 54 gboolean g_queue_is_empty(GQueue* queue); 55 guint g_queue_get_length(GQueue* queue); 56 void g_queue_reverse(GQueue* queue); 57 GQueue* g_queue_copy(GQueue* queue); 58 void g_queue_foreach(GQueue* queue, GFunc func, gpointer user_data); 59 GList* g_queue_find(GQueue* queue, gconstpointer data); 60 GList* g_queue_find_custom(GQueue* queue, gconstpointer data, GCompareFunc func); 61 void g_queue_sort(GQueue* queue, GCompareDataFunc compare_func, gpointer user_data); 62 void g_queue_push_head(GQueue* queue, gpointer data); 63 void g_queue_push_tail(GQueue* queue, gpointer data); 64 void g_queue_push_nth(GQueue* queue, gpointer data, gint n); 65 gpointer g_queue_pop_head(GQueue* queue); 66 gpointer g_queue_pop_tail(GQueue* queue); 67 gpointer g_queue_pop_nth(GQueue* queue, guint n); 68 gpointer g_queue_peek_head(GQueue* queue); 69 gpointer g_queue_peek_tail(GQueue* queue); 70 gpointer g_queue_peek_nth(GQueue* queue, guint n); 71 gint g_queue_index(GQueue* queue, gconstpointer data); 72 gboolean g_queue_remove(GQueue* queue, gconstpointer data); 73 guint g_queue_remove_all(GQueue* queue, gconstpointer data); 74 void g_queue_insert_before(GQueue* queue, GList* sibling, gpointer data); 75 void g_queue_insert_after(GQueue* queue, GList* sibling, gpointer data); 76 void g_queue_insert_sorted(GQueue* queue, gpointer data, GCompareDataFunc func, gpointer user_data); 77 void g_queue_push_head_link(GQueue* queue, GList* link_); 78 void g_queue_push_tail_link(GQueue* queue, GList* link_); 79 void g_queue_push_nth_link(GQueue* queue, gint n, GList* link_); 80 GList* g_queue_pop_head_link(GQueue* queue); 81 GList* g_queue_pop_tail_link(GQueue* queue); 82 GList* g_queue_pop_nth_link(GQueue* queue, guint n); 83 GList* g_queue_peek_head_link(GQueue* queue); 84 GList* g_queue_peek_tail_link(GQueue* queue); 85 GList* g_queue_peek_nth_link(GQueue* queue, guint n); 86 gint g_queue_link_index(GQueue* queue, GList* link_); 87 void g_queue_unlink(GQueue* queue, GList* link_); 88 void g_queue_delete_link(GQueue* queue, GList* link_); 89 } 90 } 91 else 92 { 93 extern( C ) nothrow 94 { 95 alias da_g_queue_new = GQueue* function(); 96 alias da_g_queue_free = void function(GQueue* queue); 97 alias da_g_queue_free_full = void function(GQueue* queue, GDestroyNotify free_func); 98 alias da_g_queue_init = void function(GQueue* queue); 99 alias da_g_queue_clear = void function(GQueue* queue); 100 alias da_g_queue_is_empty = gboolean function(GQueue* queue); 101 alias da_g_queue_get_length = guint function(GQueue* queue); 102 alias da_g_queue_reverse = void function(GQueue* queue); 103 alias da_g_queue_copy = GQueue* function(GQueue* queue); 104 alias da_g_queue_foreach = void function(GQueue* queue, GFunc func, gpointer user_data); 105 alias da_g_queue_find = GList* function(GQueue* queue, gconstpointer data); 106 alias da_g_queue_find_custom = GList* function(GQueue* queue, gconstpointer data, GCompareFunc func); 107 alias da_g_queue_sort = void function(GQueue* queue, GCompareDataFunc compare_func, gpointer user_data); 108 alias da_g_queue_push_head = void function(GQueue* queue, gpointer data); 109 alias da_g_queue_push_tail = void function(GQueue* queue, gpointer data); 110 alias da_g_queue_push_nth = void function(GQueue* queue, gpointer data, gint n); 111 alias da_g_queue_pop_head = gpointer function(GQueue* queue); 112 alias da_g_queue_pop_tail = gpointer function(GQueue* queue); 113 alias da_g_queue_pop_nth = gpointer function(GQueue* queue, guint n); 114 alias da_g_queue_peek_head = gpointer function(GQueue* queue); 115 alias da_g_queue_peek_tail = gpointer function(GQueue* queue); 116 alias da_g_queue_peek_nth = gpointer function(GQueue* queue, guint n); 117 alias da_g_queue_index = gint function(GQueue* queue, gconstpointer data); 118 alias da_g_queue_remove = gboolean function(GQueue* queue, gconstpointer data); 119 alias da_g_queue_remove_all = guint function(GQueue* queue, gconstpointer data); 120 alias da_g_queue_insert_before = void function(GQueue* queue, GList* sibling, gpointer data); 121 alias da_g_queue_insert_after = void function(GQueue* queue, GList* sibling, gpointer data); 122 alias da_g_queue_insert_sorted = void function(GQueue* queue, gpointer data, GCompareDataFunc func, gpointer user_data); 123 alias da_g_queue_push_head_link = void function(GQueue* queue, GList* link_); 124 alias da_g_queue_push_tail_link = void function(GQueue* queue, GList* link_); 125 alias da_g_queue_push_nth_link = void function(GQueue* queue, gint n, GList* link_); 126 alias da_g_queue_pop_head_link = GList* function(GQueue* queue); 127 alias da_g_queue_pop_tail_link = GList* function(GQueue* queue); 128 alias da_g_queue_pop_nth_link = GList* function(GQueue* queue, guint n); 129 alias da_g_queue_peek_head_link = GList* function(GQueue* queue); 130 alias da_g_queue_peek_tail_link = GList* function(GQueue* queue); 131 alias da_g_queue_peek_nth_link = GList* function(GQueue* queue, guint n); 132 alias da_g_queue_link_index = gint function(GQueue* queue, GList* link_); 133 alias da_g_queue_unlink = void function(GQueue* queue, GList* link_); 134 alias da_g_queue_delete_link = void function(GQueue* queue, GList* link_); 135 } 136 137 __gshared 138 { 139 da_g_queue_new g_queue_new; 140 da_g_queue_free g_queue_free; 141 da_g_queue_free_full g_queue_free_full; 142 da_g_queue_init g_queue_init; 143 da_g_queue_clear g_queue_clear; 144 da_g_queue_is_empty g_queue_is_empty; 145 da_g_queue_get_length g_queue_get_length; 146 da_g_queue_reverse g_queue_reverse; 147 da_g_queue_copy g_queue_copy; 148 da_g_queue_foreach g_queue_foreach; 149 da_g_queue_find g_queue_find; 150 da_g_queue_find_custom g_queue_find_custom; 151 da_g_queue_sort g_queue_sort; 152 da_g_queue_push_head g_queue_push_head; 153 da_g_queue_push_tail g_queue_push_tail; 154 da_g_queue_push_nth g_queue_push_nth; 155 da_g_queue_pop_head g_queue_pop_head; 156 da_g_queue_pop_tail g_queue_pop_tail; 157 da_g_queue_pop_nth g_queue_pop_nth; 158 da_g_queue_peek_head g_queue_peek_head; 159 da_g_queue_peek_tail g_queue_peek_tail; 160 da_g_queue_peek_nth g_queue_peek_nth; 161 da_g_queue_index g_queue_index; 162 da_g_queue_remove g_queue_remove; 163 da_g_queue_remove_all g_queue_remove_all; 164 da_g_queue_insert_before g_queue_insert_before; 165 da_g_queue_insert_after g_queue_insert_after; 166 da_g_queue_insert_sorted g_queue_insert_sorted; 167 da_g_queue_push_head_link g_queue_push_head_link; 168 da_g_queue_push_tail_link g_queue_push_tail_link; 169 da_g_queue_push_nth_link g_queue_push_nth_link; 170 da_g_queue_pop_head_link g_queue_pop_head_link; 171 da_g_queue_pop_tail_link g_queue_pop_tail_link; 172 da_g_queue_pop_nth_link g_queue_pop_nth_link; 173 da_g_queue_peek_head_link g_queue_peek_head_link; 174 da_g_queue_peek_tail_link g_queue_peek_tail_link; 175 da_g_queue_peek_nth_link g_queue_peek_nth_link; 176 da_g_queue_link_index g_queue_link_index; 177 da_g_queue_unlink g_queue_unlink; 178 da_g_queue_delete_link g_queue_delete_link; 179 } 180 }